package com.srcptit.java.training.kienbd.btvn1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Bai8SapxeptuAlphabe {
    public static void main(String[] args) throws IOException {           
            // Sử dụng Buffered đọc file.
            BufferedReader bufr = new BufferedReader(new FileReader("data8.txt"));   
            
            // Kiểm tra ngoại lệ.  
            try {
                // Kiểm tra file trống.
                if( bufr.ready()==false )    throw new myEx1();// Bắt lỗi file trống    
                
                // Đọc dữ liệu từ file.
                String dataout = bufr.readLine();
                if( Test(dataout)==false )  throw new Exception();//Bắt lỗi ko thỏa mãn để bài.
                
                Sapxep(dataout);
                
                // Kết thúc đọc file.
                bufr.close();
            }catch(myEx1 e){
                System.out.println("Error! File is empty");
            }catch(Exception e){
                System.out.println("Error!");
            }           
    }
    static boolean Test(String Question){// Kiểm tra theo điều kiện đề bài.
            // Use StringTokenizer.
            StringTokenizer stk = new StringTokenizer(Question," ",false);
            
            String str;
            int sotu = 0;            
            while(stk.hasMoreTokens()){
                str = stk.nextToken();
                if( str.length()>10 )   return false;
                sotu++;
            }
            if( sotu>20 )   return false;
            return true;
    }
    static void Sapxep(String Question) throws IOException{// Duyệt Xâu và sắp xếp từ theo Alphabe.
            // Sử dụng Buffered ghi file.
            BufferedWriter bufw = new BufferedWriter(new FileWriter("result8.txt")); 
            
            StringTokenizer stk = new StringTokenizer(Question," ",false);
            String str[] = new String[25];
            int index = 0;
            
            // Gán từng từ cho mảng String.
            while(stk.hasMoreTokens()){
                str[index] = stk.nextToken();
                index++;
            }
            
            // Sắp xếp mảng String theo Alphabe.
            String hv;
            for(int i=0; i<index-1; i++)
            for(int j=i+1; j<index; j++){    
                if( str[i].compareTo(str[j])>0 ){
                    hv = str[i];str[i] = str[j];str[j] = hv;
                }
            }
            
            // Xâu đã sắp xếp.
            String newString = new String();
            for(int i=0; i<index; i++){
                newString += str[i] + " ";
            }

            // Ghi kết quả vào file.
            bufw.write(newString);
            // Đóng phương thức ghi file. 
            bufw.close();
    }
}
